In prior art computer network communications between applications is limited to the static attributes of the communications endpoint. When a communications endpoint is created, it has implicit attributes associated with the type of endpoint created (e.g. TCP/UDP). In addition to the implicit attributes of the endpoint, the application assigns other explicit attributes to the endpoint. For example, if the endpoint is of type TCP socket, the application assigns a local address to the endpoint by binding the socket to a local address. In addition, the application assigns a remote address attribute to the endpoint by connecting the socket to a remote address. These attributes are associated with the endpoint until either the endpoint is destroyed or possibly until the client application changes the attributes of the endpoint.
The endpoint attributes, both implicit and explicit, are typically specified at the time the application is created, at the time the application is run or at the time the endpoint gets created. However in a highly dynamic runtime environment, the attributes initially assigned to the endpoint often are non-optimal for the current operating system and/or network state, resulting in less efficient usage of system resources and/or non-optimal use of network communications. In the prior art, applications attempting to be tuned to a dynamic environment have the logic embedded within the application to monitor the system/network state and adjust its communications accordingly. However this is highly dependent on the running system environment and beyond the scope of most application.